package ui.tablemodels;

import java.util.ArrayList;

import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;

import beans.Lehrer;
import beans.Bereich;

public class LehrerDTM extends AbstractTableModel {
	private ArrayList<Lehrer> lehrers;
	private ArrayList<TableModelListener> tml;
	
	public LehrerDTM(ArrayList<Lehrer> lehrers) {
		this.lehrers = lehrers;
	}
	
	public LehrerDTM() {};
	
	public ArrayList<Lehrer> getLehrers() {
		return lehrers;
	}

	public void setLehrers(ArrayList<Lehrer> lehrers) {
		this.lehrers = lehrers;
	}
	
	public void addLehrer(Lehrer bereich) {
		int index = this.lehrers.size();
		this.lehrers.add(bereich);
		TableModelEvent event = new TableModelEvent(this, index, index, TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT);
		for(TableModelListener l : this.tml) {
			l.tableChanged(event);
		}
	}
	
	public void removeLehrer(int index_from, int index_to) 
	{
		TableModelEvent event = new TableModelEvent(
				this,
				index_from,
				index_to,
				TableModelEvent.ALL_COLUMNS,
				TableModelEvent.DELETE);
		fireTableChanged(event);
		for(int x = index_to; x >= index_from; x--) {
			this.lehrers.remove(x);
		}
	}
	
//	public update() {
//
//		
//		for(TableModelListener l : this.tml) {
//			l.tableChanged(e);
//		}
//	}

	@Override
	public int getRowCount() {
		return this.lehrers.size();
	}

	@Override
	public int getColumnCount() {
		return 7;
	}

	@Override
	public String getColumnName(int columnIndex) {
		switch(columnIndex) {
		case 0: return "ID";
		case 1: return "Betriebnr";
		case 2: return "Anrede";
		case 3: return "Name";
		case 4: return "Vorname";
		case 5: return "Email";
		case 6: return "Tel";
		default: return "n/a";
		}
	}

//	@Override
//	public Class<?> getColumnClass(int columnIndex) {
//		Betrieb betrieb = new Betrieb();
//		
//		switch(columnIndex) {
//		case 0: return int.class;
//		case 1: return String.class;
//		case 2: return String.class;
//		case 3: return String.class;
//		case 4: return String.class;
//		case 5: return String.class;
//		default: return Object.class;
//		}
//	}

	@Override
	public boolean isCellEditable(int rowIndex, int columnIndex) {
		if(columnIndex != 0) return true;
		return false;
	}

	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		switch(columnIndex) {
		case 0: return this.lehrers.get(rowIndex).getLehrer_nr();
		case 1: return this.lehrers.get(rowIndex).getName();
		case 2: return this.lehrers.get(rowIndex).getVorname();
		case 3: return this.lehrers.get(rowIndex).getEmail();
		case 4: return this.lehrers.get(rowIndex).getPasswort();
		}
		return null;
	}

	@Override
	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
		switch(columnIndex) {
		case 1: this.lehrers.get(rowIndex).setLehrer_nr((Integer)aValue); break;
		case 2: this.lehrers.get(rowIndex).setName((String)aValue); break;
		case 3: this.lehrers.get(rowIndex).setVorname((String)aValue); break;
		case 4: this.lehrers.get(rowIndex).setEmail((String)aValue); break;
		case 5: this.lehrers.get(rowIndex).setPasswort((String)aValue); break;
		}
	}
}
